package com.szh.cloud.file.service;

import com.szh.cloud.file.entity.SearFileEntity;
import com.szh.cloud.mybatis.entity.PtFileEntity;
import com.szh.cloud.mybatis.flexigrid.FlexResEntity;
import com.szh.cloud.mybatis.flexigrid.PagingBean;
import org.springframework.http.ResponseEntity;

import java.io.IOException;
import java.io.InputStream;

public interface FileService {
    /**
     * 文件类型:文件
     */
    Integer FILE_TYPR_FILE = 0;
    /**
     * 文件类型:文件夹
     */
    Integer FILE_TYPR_DIR = 1;
    /**
文件分隔符
 */
    String File_SEPARATOR = "/";
    /*
文件同步
 */
    void synchFileData();

    /**
     * 日期：天
     */
    Integer SHARE_DATE_UTIL = 60*60*24;

    /*
老师：分页查询
@param entity
@parm paging
@return
 */
    FlexResEntity<PtFileEntity> queryFileListByPage(SearFileEntity entity, PagingBean paging);

    /**
     * *根据文件查询父文件信息
     * @param fileUuid
     * @return
     */
    PtFileEntity queryParentFileById(String fileUuid);

    /**
     * 创建文件夹
     * @param folderName 文件夹名称
     * @param parentName 父目录
     */
    void mkdir(String folderName, String parentName);

    /**
     * 文件上传
     * @param fileName 文件名称
     * @param parentPath 父目录
     * @param inputStream 文件流
     */
    void uploadFile(String fileName, String parentPath, InputStream inputStream);

    /**
     * 文件下载
     * @param fileUuid
     * @return
     */
    ResponseEntity<byte[]> downloadFile(String fileUuid);

    /**
     * 分享文件
     * @param fileUuid 文件编码
     * @param shareDate 有效期 天
     * @return
     */
    String queryShareUrl(String fileUuid, Integer shareDate);

    /**
     *获取文件地址
     * @param fileUuid
     * @return
     */
    String queryFileUrl(String fileUuid);

    /**
     * 复制文件
     * @param fileUuidArray 文件编码数组
     * @param descDir 目标目录
     */
    void copyPasteFile(String fileUuidArray, String descDir);
}
